/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package aprendizajePorRefuerzo.funcionQ;

import aprendizajePorRefuerzo.estado.Estado;
import aprendizajePorRefuerzo.accion.Accion;
import java.text.DecimalFormat;
import java.util.HashMap;
import java.util.Map;

/**
 *
 * @author Fernando Sorzana
 */
public class QImp implements Q{
    
    private Map<Estado,Map<Accion,Double>> matrizQ;
    
    public QImp(){
        matrizQ = new HashMap<>();
    }

    @Override
    public void setValor(Estado estado, Accion accion, double valor) {
        if (!matrizQ.containsKey(estado)){
            matrizQ.put(estado, new HashMap<Accion,Double>());
        }
        matrizQ.get(estado).put(accion, valor);
    }

    @Override
    public double getValor(Estado estado, Accion accion) {
        if (matrizQ.get(estado) == null || matrizQ.get(estado).get(accion) == null){
            return 0.0;
        } else {
            return matrizQ.get(estado).get(accion);
        }
    }
    
    public String imprimir(){
        DecimalFormat format = new DecimalFormat("#.####");
        String respuesta = "";
        for (Estado e : matrizQ.keySet()){
            respuesta += e;
            for (Accion a : matrizQ.get(e).keySet()){
                respuesta += "," + a + "," + format.format(matrizQ.get(e).get(a));
            }
            respuesta += "\n";
        }
        return respuesta;
    }
    
}
